webos/web/apps/album/js/index-init.js
2024-02-28 17:21:32 +08:00

169 lines
6.7 KiB
JavaScript

(function(){
Vue.app({
data(){
return {
photos:[],
firstPath:"",
parentPath:"",
view:{
show:false,
list:[],
current:0
},
openType:0,
list:[]
}
},
methods:{
removeData:function (index){
var that = this;
var one = that.photos[index];
parent.utils.$.confirm("确认删除'"+one.mainName+"'图片吗?",async function(flag){
if(!flag){
return;
}
that.list.splice(index,1);
that.photos.splice(index,1);
await parent.webos.softUserData.syncList("album_list",that.list);
});
},
toShowLastPath:function (){
var that = this;
var sz = that.parentPath.split("/");
sz.length -= 1;
that.openFolderByPath(sz.join("/"));
},
setTheme:function(theme){
theme = theme == "dark"?"dark":"";
document.querySelector("html").className = theme;
},
init:async function (){
var that = this;
window.addEventListener("message",function (e){
let data = e.data;
if(data.action == "themeChange"){
that.setTheme(data.theme);
}
});
that.setTheme(localStorage.getItem("web_theme"));
var param = new URL(location.href).searchParams;
var expAction = param.get("expAction");
if(expAction == "openfolder"){
//文件夹打开
var data = {
name:param.get("fname"),
path:param.get("path")
}
that.firstPath = data.path;
await that.openFolderByPath(data.path);
}else{
var index = -1;
var list = await parent.webos.softUserData.syncList("album_list");
var needSync = false;
that.openType = 1;
if(expAction == "open"){
//打开单个文件
var data = {
name:param.get("fname"),
path:param.get("path")
}
index = album.hasInList(list,data);
if(index == -1){
list.push(data);
index = list.length - 1;
needSync = true;
}
}else if(expAction == "playlist"){
//添加到默认相册
var files = await parent.webos.util.getBigData("addAllFiles");
for (let i = 0; i < files.length; i++) {
var file = files[i];
var data = {name:file.name,path:file.path};
var tmpIndex = album.hasInList(list,data);
if(tmpIndex == -1){
list.push(data);
tmpIndex = list.length - 1;
needSync = true;
}
if(index == -1){
index = tmpIndex;
}
}
}
if(index == -1){
index = 0;
}
if(needSync){
parent.webos.softUserData.syncList("album_list",list);
}
var photos = [];
for (let i = 0; i < list.length; i++) {
var one = list[i];
one.type = 1;
one.url = await parent.webos.fileSystem.zl(one.path);
one.thumbnail = one.url;
one.mainName = parent.webos.util.getMainByName(one.name);
photos.push(one);
}
that.photos = photos;
that.list = list;
that.toShowPhoto(index);
}
},
openFolderByPath:async function (path){
var that = this;
that.parentPath = path;
that.photos = [];
await parent.webos.fileSystem.getFileListByParentPath(path,async function (list,expData){
for (let i = 0; i < list.length; i++) {
var tmp = list[i];
if(tmp.type != 2 && !album.isImage(tmp.ext)){
continue;
}
var one = {
type:tmp.type,
path:tmp.path
};
if(tmp.type == 2){
one.mainName = tmp.filterName;
one.thumbnail = "icon.png";
}else{
one.mainName = parent.webos.util.getMainByName(tmp.name);
one.url = await parent.webos.fileSystem.zl(tmp.path);
one.thumbnail = tmp.thumbnail
}
that.photos.push(one);
}
});
},
toShowPhoto:function (index){
var that = this;
var item = that.photos[index];
if(item.type == 2){
//打开目录
that.openFolderByPath(item.path);
}else{
//打开文件预览
var photos = [];
var current = 0;
for (let i = 0; i < that.photos.length; i++) {
var one = that.photos[i];
if(one.type != 1){
continue;
}
if(item.url == one.url && current == 0){
current = photos.length;
}
photos.push(one.url);
}
that.view.list = photos;
that.view.current = current;
that.view.show = true;
}
}
},
mounted:function(){
this.init();
}
});
})()