mirror of
https://github.com/ducbao414/win32.run.git
synced 2025-12-15 08:42:49 +09:00
migrate: remove .files, .folders, use .children instead
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
export let style;
|
||||
export let classes;
|
||||
|
||||
$: icon = $hardDrive[recycle_bin_id]?.files.length > 0 || $hardDrive[recycle_bin_id]?.folders.length > 0 ?
|
||||
$: icon = $hardDrive[recycle_bin_id]?.children.length > 0 || $hardDrive[recycle_bin_id]?.children.length > 0 ?
|
||||
'url(/images/xp/icons/RecycleBinfull.png)' : 'url(/images/xp/icons/RecycleBinempty.png)';
|
||||
|
||||
function on_dbclick(){
|
||||
|
||||
@@ -20,10 +20,11 @@
|
||||
$: url = finder.to_url(history[page_index]) || 'My Computer';
|
||||
export let id;
|
||||
|
||||
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
|
||||
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
|
||||
|
||||
$: items = [...files, ...folders]
|
||||
$: items = $hardDrive[id] == null ?
|
||||
[] :
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.filter(el => el != null)
|
||||
.filter(el => !hidden_items.includes(el.id));
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@
|
||||
let page_index = 0;
|
||||
$: url = finder.to_url(history[page_index]) || 'My Computer';
|
||||
|
||||
|
||||
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
|
||||
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
|
||||
|
||||
$: items = [...files, ...folders]
|
||||
$: items = $hardDrive[id] == null ?
|
||||
[] :
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.filter(el => el != null)
|
||||
.filter(el => !hidden_items.includes(el.id));
|
||||
|
||||
|
||||
@@ -29,9 +29,8 @@ export let make = ({type, originator}) => {
|
||||
name: 'Empty Recycle Bin',
|
||||
action: () => {
|
||||
let yes_action = () => {
|
||||
let files = get(hardDrive)[recycle_bin_id].files;
|
||||
let folders = get(hardDrive)[recycle_bin_id].folders;
|
||||
for(let id of [...files, ...folders]){
|
||||
let children = get(hardDrive)[recycle_bin_id].children;
|
||||
for(let id of [...children]){
|
||||
fs.del_fs(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,8 +45,7 @@ export function to_id_nocase(url){
|
||||
console.log(i);
|
||||
console.log(path_components[i]);
|
||||
current_location = [
|
||||
...current_location.files.map(id => get(hardDrive)[id]),
|
||||
...current_location.folders.map(id => get(hardDrive)[id])
|
||||
...current_location.children.map(id => get(hardDrive)[id])
|
||||
]
|
||||
.find(item => item?.name?.toLowerCase() == path_components[i].toLowerCase());
|
||||
console.log(current_location);
|
||||
@@ -76,8 +75,7 @@ export function to_id(url){
|
||||
console.log(i);
|
||||
console.log(path_components[i]);
|
||||
current_location = [
|
||||
...current_location.files.map(id => get(hardDrive)[id]),
|
||||
...current_location.folders.map(id => get(hardDrive)[id])
|
||||
...current_location.children.map(id => get(hardDrive)[id])
|
||||
]
|
||||
.find(item => item?.name == path_components[i]);
|
||||
console.log(current_location);
|
||||
|
||||
@@ -54,15 +54,13 @@ export function del_fs(id){
|
||||
let obj = get(hardDrive)[id];
|
||||
|
||||
let child_ids = [
|
||||
...obj.files,
|
||||
...obj.folders
|
||||
...obj.children
|
||||
]
|
||||
if(get(hardDrive)[obj.parent] != null){
|
||||
console.log('delete from parent', obj.parent)
|
||||
|
||||
hardDrive.update(data => {
|
||||
data[obj.parent].files = data[obj.parent].files.filter(el => el != obj.id);
|
||||
data[obj.parent].folders = data[obj.parent].folders.filter(el => el != obj.id);
|
||||
data[obj.parent].children = data[obj.parent].children.filter(el => el != obj.id);
|
||||
return data;
|
||||
})
|
||||
}
|
||||
@@ -89,8 +87,7 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
|
||||
obj.parent = parent_id;
|
||||
|
||||
let parent_items_names = [
|
||||
...get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el].name),
|
||||
...get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el].name),
|
||||
...get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el].name),
|
||||
]
|
||||
let appendix = 2;
|
||||
let basename = obj.basename;
|
||||
@@ -101,12 +98,10 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
|
||||
obj.basename = basename;
|
||||
obj.name = basename + obj.ext;
|
||||
|
||||
//backup files & folders
|
||||
//backup children
|
||||
console.log(obj)
|
||||
let files = [...obj.files];
|
||||
let folders = [...obj.folders];
|
||||
obj.files = [];
|
||||
obj.folders = [];
|
||||
let children = [...obj.children];
|
||||
obj.children = [];
|
||||
|
||||
//save to hard drive
|
||||
hardDrive.update(data => {
|
||||
@@ -115,21 +110,13 @@ export function clone_fs(obj_current_id, parent_id, new_id=null){
|
||||
})
|
||||
console.log('cloning', obj.id)
|
||||
|
||||
if(obj.type == 'file'){
|
||||
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].files.push(obj.id);
|
||||
return data;
|
||||
})
|
||||
} else if(obj.type == 'folder'){
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].folders.push(obj.id);
|
||||
return data;
|
||||
})
|
||||
}
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].children.push(obj.id);
|
||||
return data;
|
||||
})
|
||||
|
||||
//recursively clone child items
|
||||
for(let child of [...files, ...folders]){
|
||||
for(let child of [...children]){
|
||||
clone_fs(child, obj.id);
|
||||
}
|
||||
}
|
||||
@@ -151,17 +138,14 @@ export async function new_fs_item(type, ext, seedname, parent_id, file=null){
|
||||
"level": 0,
|
||||
"parent": parent_id,
|
||||
"size": 1,
|
||||
"files": [],
|
||||
"folders": [],
|
||||
"children": [],
|
||||
"basename": ""
|
||||
}
|
||||
|
||||
let files = get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el]);
|
||||
let folders = get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el]);
|
||||
let children = get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el]);
|
||||
|
||||
let parent_items_names = [
|
||||
...files.map(el => el.name),
|
||||
...folders.map(el => el.name)
|
||||
...children.map(el => el.name)
|
||||
]
|
||||
|
||||
let appendix = 2;
|
||||
@@ -193,17 +177,10 @@ export async function new_fs_item(type, ext, seedname, parent_id, file=null){
|
||||
data[item.id] = item;
|
||||
return data;
|
||||
})
|
||||
if(type == 'file'){
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].files.push(item.id);
|
||||
return data;
|
||||
})
|
||||
} else if (type == 'folder'){
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].folders.push(item.id);
|
||||
return data;
|
||||
})
|
||||
}
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].children.push(item.id);
|
||||
return data;
|
||||
})
|
||||
|
||||
return item.id;
|
||||
}
|
||||
@@ -227,19 +204,14 @@ export async function new_fs_item_raw(item, parent_id){
|
||||
if(item.icon == null){
|
||||
item.icon = '/images/xp/icons/ApplicationWindow.png'
|
||||
}
|
||||
if(item.files == null){
|
||||
item.files = [];
|
||||
}
|
||||
if(item.folders == null){
|
||||
item.folders = [];
|
||||
if(item.children == null){
|
||||
item.children = [];
|
||||
}
|
||||
|
||||
let files = get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el]);
|
||||
let folders = get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el]);
|
||||
let children = get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el]);
|
||||
|
||||
let parent_items_names = [
|
||||
...files.map(el => el.name),
|
||||
...folders.map(el => el.name)
|
||||
...children.map(el => el.name)
|
||||
]
|
||||
|
||||
let appendix = 2;
|
||||
@@ -266,17 +238,10 @@ export async function new_fs_item_raw(item, parent_id){
|
||||
data[item.id] = item;
|
||||
return data;
|
||||
})
|
||||
if(item.type == 'file'){
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].files.push(item.id);
|
||||
return data;
|
||||
})
|
||||
} else if (item.type == 'folder'){
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].folders.push(item.id);
|
||||
return data;
|
||||
})
|
||||
}
|
||||
hardDrive.update(data => {
|
||||
data[parent_id].children.push(item.id);
|
||||
return data;
|
||||
})
|
||||
|
||||
return item.id;
|
||||
}
|
||||
@@ -323,14 +288,12 @@ export async function save_file_as(basename, ext, file, parent_id, new_id=null){
|
||||
"level": 0,
|
||||
"parent": parent_id,
|
||||
"size": Math.round(file.size/1024),
|
||||
"files": [],
|
||||
"folders": [],
|
||||
"children": [],
|
||||
"basename": basename
|
||||
}
|
||||
|
||||
let parent_items_names = [
|
||||
...get(hardDrive)[parent_id].files.map(el => get(hardDrive)[el].name),
|
||||
...get(hardDrive)[parent_id].folders.map(el => get(hardDrive)[el].name),
|
||||
...get(hardDrive)[parent_id].children.map(el => get(hardDrive)[el].name)
|
||||
]
|
||||
let appendix = 2;
|
||||
basename = obj.basename;
|
||||
@@ -344,7 +307,7 @@ export async function save_file_as(basename, ext, file, parent_id, new_id=null){
|
||||
|
||||
hardDrive.update(data => {
|
||||
data[obj.id] = obj;
|
||||
data[parent_id].files.push(obj.id);
|
||||
data[parent_id].children.push(obj.id);
|
||||
return data;
|
||||
})
|
||||
}
|
||||
|
||||
@@ -15,10 +15,14 @@
|
||||
|
||||
|
||||
let id = desktop_folder;
|
||||
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
|
||||
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
|
||||
|
||||
$: items = [...files, ...folders].filter(el => el != null);
|
||||
$: items = $hardDrive[id] == null ?
|
||||
[] :
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.filter(el => el != null);
|
||||
|
||||
let is_focus = true;
|
||||
let node_ref;
|
||||
let cell_size = 80;
|
||||
@@ -152,8 +156,7 @@
|
||||
}
|
||||
|
||||
let parent_items_names = [
|
||||
...$hardDrive[item.parent].files.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
...$hardDrive[item.parent].folders.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
...$hardDrive[item.parent].children.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
]
|
||||
let appendix = 2;
|
||||
while(parent_items_names.includes(basename + item.ext)){
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
import { runningPrograms, hardDrive } from '../../../lib/store';
|
||||
import {icons} from '../../../lib/system';
|
||||
import * as utils from '../../../lib/utils';
|
||||
import _, { isEqual } from 'lodash';
|
||||
import _, { isEqual, map } from 'lodash';
|
||||
import * as finder from '../../../lib/finder';
|
||||
|
||||
export let id;
|
||||
@@ -56,8 +56,18 @@
|
||||
};
|
||||
|
||||
function size_cal(id){
|
||||
let total_size = _.sum($hardDrive[id].files.map(el => $hardDrive[el].size));
|
||||
let folders = $hardDrive[id].folders;
|
||||
let total_size = _.sum(
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(el => $hardDrive[el])
|
||||
.filter(el => el.type == 'file')
|
||||
.map(el => el.size)
|
||||
);
|
||||
|
||||
let folders = $hardDrive[id]
|
||||
.children
|
||||
.filter(el => $hardDrive[el].type == 'folder');
|
||||
|
||||
for(let folder of folders){
|
||||
total_size += size_cal(folder);
|
||||
}
|
||||
|
||||
@@ -14,7 +14,9 @@
|
||||
export let exec_path;
|
||||
|
||||
let preview = $wallpaper;
|
||||
let wallpapers = $hardDrive[wallpapers_folder].files;
|
||||
let wallpapers = $hardDrive[wallpapers_folder]
|
||||
.children
|
||||
.filter(el => $hardDrive[el].type == 'file');
|
||||
|
||||
onMount(() => {
|
||||
})
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
function next_image(curr_item){
|
||||
console.log($hardDrive[curr_item.parent])
|
||||
let siblings = $hardDrive[curr_item.parent]
|
||||
.files
|
||||
.children
|
||||
.filter(id => supported_exts.includes($hardDrive[id].ext));
|
||||
let curr_index = siblings.indexOf(curr_item.id);
|
||||
|
||||
@@ -114,7 +114,7 @@
|
||||
|
||||
function previous_image(curr_item){
|
||||
let siblings = $hardDrive[curr_item.parent]
|
||||
.files
|
||||
.children
|
||||
.filter(id => supported_exts.includes($hardDrive[id].ext));
|
||||
let curr_index = siblings.indexOf(curr_item.id);
|
||||
|
||||
|
||||
@@ -206,12 +206,12 @@
|
||||
async function find_subtitle(item){
|
||||
try {
|
||||
let vtt = $hardDrive[item.parent]
|
||||
.files
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.find(el => el.basename == item.basename && el.ext == '.vtt');
|
||||
|
||||
let srt = $hardDrive[item.parent]
|
||||
.files
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.find(el => el.basename == item.basename && el.ext == '.srt');
|
||||
|
||||
|
||||
@@ -18,10 +18,12 @@
|
||||
export let self;
|
||||
export let my_computer_instance;
|
||||
export let id = null;
|
||||
$: folders = $hardDrive[id] == null ? [] : $hardDrive[id].folders.map(id => $hardDrive[id]);
|
||||
$: files = $hardDrive[id] == null ? [] : $hardDrive[id].files.map(id => $hardDrive[id]);
|
||||
|
||||
$: items = [...files, ...folders]
|
||||
|
||||
$: items = $hardDrive[id] == null ?
|
||||
[] :
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(id => $hardDrive[id])
|
||||
.filter(el => el != null)
|
||||
.filter(el => !hidden_items.includes(el.id));
|
||||
|
||||
@@ -155,8 +157,7 @@
|
||||
}
|
||||
|
||||
let parent_items_names = [
|
||||
...$hardDrive[item.parent].files.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
...$hardDrive[item.parent].folders.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
...$hardDrive[item.parent].children.filter(el => el != item.id).map(el => $hardDrive[el].name),
|
||||
]
|
||||
let appendix = 2;
|
||||
while(parent_items_names.includes(basename + item.ext)){
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
...fs_item?.type == 'file' ? [] :
|
||||
[
|
||||
['Contains', `${fs_item.files.length} Files, ${fs_item.folders.length} Folders`]
|
||||
['Contains', `${fs_item.children.filter(el => $hardDrive[el].type == 'file').length} Files, ${fs_item.children.filter(el => $hardDrive[el].type == 'folder').length} Folders`]
|
||||
]
|
||||
]
|
||||
|
||||
@@ -64,8 +64,18 @@
|
||||
};
|
||||
|
||||
function size_cal(id){
|
||||
let total_size = _.sum($hardDrive[id].files.map(el => $hardDrive[el].size));
|
||||
let folders = $hardDrive[id].folders;
|
||||
console.log(id);
|
||||
let total_size = _.sum(
|
||||
$hardDrive[id]
|
||||
.children
|
||||
.map(el => $hardDrive[el])
|
||||
.filter(el => el.type == 'file')
|
||||
.map(el => el.size)
|
||||
);
|
||||
|
||||
let folders = $hardDrive[id]
|
||||
.children
|
||||
.filter(el => $hardDrive[el].type == 'folder');
|
||||
for(let folder of folders){
|
||||
total_size += size_cal(folder);
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
if(cancelled) return;
|
||||
if(item.type == 'folder'){
|
||||
let folder = parent.folder(item.name);
|
||||
for(let child_item of [...item.folders, ...item.files]){
|
||||
for(let child_item of [...item.children]){
|
||||
child_item = $hardDrive[child_item];
|
||||
await add_to_archive(folder, child_item);
|
||||
}
|
||||
|
||||
@@ -53,7 +53,6 @@
|
||||
|
||||
async function load_hard_drive(){
|
||||
let hard_drive = await get('hard_drive');
|
||||
console.log(hard_drive);
|
||||
if(hard_drive == null){
|
||||
hard_drive = (await axios({
|
||||
method: 'get',
|
||||
@@ -61,9 +60,22 @@
|
||||
})).data;
|
||||
await set('hard_drive', hard_drive);
|
||||
}
|
||||
migrate_files_format(hard_drive);
|
||||
console.log(hard_drive);
|
||||
hardDrive.set(hard_drive);
|
||||
}
|
||||
|
||||
function migrate_files_format(drive){
|
||||
for(let key of Object.keys(drive)){
|
||||
let obj = drive[key];
|
||||
if(obj.children == null){
|
||||
obj.children = [...obj.files, ...obj.folders];
|
||||
delete obj.files;
|
||||
delete obj.folders;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function load_wallpaper(){
|
||||
$wallpaper = await get('wallpaper');
|
||||
if($wallpaper == null){
|
||||
|
||||
Reference in New Issue
Block a user